[. . . ] Help desk for registered users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adopted conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TYPICAL DEPLOYMENT SCENARIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Installing Kaspersky Anti-Virus on the same server with your mail system . . . . . . [. . . ] Thus, iteration constructs are used to distinguish both the single and multiple values of a macro. For example, if the macro %FILTERNAME% has the values of KAVFilter1, KAVFilter2, KAVFilter3, and SimpleFilter, then the construct: <FOR FILTERNAME == "KAVFilter1">%FILTERNAME%</FOR> will produce the text: KAVFilter1 the construct: <FOR FILTERNAME `= "KAVFilter?">%FILTERNAME%, </FOR> will produce the text: KAVFilter1, KAVFilter2, KAVFilter3 the construct: <FOR FILTERNAME != "KAVFilter2">%FILTERNAME%, </FOR> will produce the text: KAVFilter1, KAVFilter3, SimpleFilter the construct: <FOR FILTERNAME != "KAV*">%FILTERNAME%, </FOR> will produce the text: SimpleFilter, 6. 11. 2. 3. Scope of visibility for an iterative statement Any iteration construct can have sub-macros, whose values are defined within the scope of visibility for the parent construct only. Iterative statements can be used not only to output particular values of particular macros, but also to define the scope of visibility of sub-macros. The scope of visibility of a sub-macro is defined by the start and end tags of the condition construct: 52 Kaspersky Anti-Virus® for Sendmail with Milter API <FOR _macro_name_parent_ == "_value_1">%_macro_name_child_%</FOR> In the above example, the scope of the macro %_macro_name_parent_% includes all sublevels (between the FOR tags) if the macro value is overridden. 6. 11. 2. 4. Variables Variables provide better flexibility in customizing templates using the Template language. A variable can be defined within the specified scope of flexibility as follows: <DEF _var_name_ = "_const_value_"/> This variable can be used further as a usual macro without any limitations. The syntax for a variable definition statement is as follows: <DEF VNAME VOP VVALUE/> where: <DEF ­ beginning of variable definition statement. The < symbol that is not the beginning of the statement must be screened (see section 6. 11. 2. 5 on page 54); VNAME ­ variable name in the format 1*(nchar)*(nchar); the maximum length is 64 bytes; VOP ­ assignment operation in the format =; the length is 1 byte; VVALUE ­ variable value in the format 1*(vchar)*(vchar); the maximum length is 4096 bytes. If compared with a value that has a quote mark inside, use the escape symbol (see section 6. 11. 2. 5 on page 54). Example: <DEF _value_name_ = "\"_value_1\""/> > ­ end of the variable definition statement. To output the `>' symbol into the template text, use `\>'. The number of spaces or tab symbols (either their presence or absence) between the language constructs is not regulated. Reserved keywords must be separated either by white space characters or by the special symbols. 6. 11. 2. 6. Notification macros for the application Macros can be used in notification templates for either entire messages or their parts. Using macros, you can customize notifications to include additional information on the properties of an original message or object or about actions applied to them. The administrator can use the following macro in notifications concerning entire messages: %CLIENT_ADDR% ­ remote address of the mail client. %BK_ACTION% ­ actions applied to the message that caused a backup copy to be created (if the application is configured to back up messages). %BK_LOCATION% ­ full path to the backup storage (if the storage exists). %ACTION_LIST% ­ list containing information about the message and its object and a list of actions applied to them. The information is output as status action information for each processed part of the message. In notifications related to deleted objects from a message, the following macro can be used: %STATUS% ­ Object status assigned as the result of scanning or filtering. [. . . ] You must have reasonable mechanisms in place to ensure that the number of Client Devices on which the Software has been installed does not exceed the number of licences you have obtained. This licence authorizes you to make or download one copy of the Documentation for each additional copy authorized by the volume licence, provided that each such copy contains all of the Document's proprietary notices. This Agreement is effective for one (1) year unless and until earlier terminated as set forth herein. This Agreement will terminate automatically if you fail to comply with any of the conditions, limitations or other requirements described herein. [. . . ]